package top.zhillerlab.kmpdemo2

import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager
import kotlin.math.roundToInt

/**
 * 实现电池管理功能的类
 *
 * @param context 应用程序上下文，用于获取电池信息
 */
actual class BatteryManager(
  private val context: Context
) {
  /**
   * 获取电池电量百分比
   *
   * 通过广播接收器获取电池状态，并计算电池电量百分比
   *
   * @return 电池电量百分比（0-100）
   */
  actual fun getBatteryLevel(): Int {
    // 创建一个意图过滤器，用于匹配电池状态改变的广播
    val intentFilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
    // 使用广播接收器接收电池状态的广播，这里不需要创建一个具体的接收器对象
    val batteryStatus = context.registerReceiver(null, intentFilter)
    // 从广播意图中获取电池电量级别，如果没有提供则默认为-1
    val level = batteryStatus?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1
    // 从广播意图中获取电池电量的缩放值，如果没有提供则默认为-1
    val scale = batteryStatus?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1

    // 计算并返回电池电量百分比
    return (level / scale.toFloat() * 100).roundToInt()
  }
}